filmes = read_imported_data()
filmes_transform = filmes %>%
mutate(bilheteria_log_scaled = as.vector(scale(log10(bilheteria))),
avaliacao_scaled = as.vector(scale(avaliacao)))
plot_clusgap = function(clusgap, title = "Gap Statistic calculation results") {
require("ggplot2")
gstab = data.frame(clusgap$Tab, k = 1:nrow(clusgap$Tab))
p = ggplot(gstab, aes(k, gap)) + geom_line() + geom_point(size = 5)
p = p + geom_errorbar(aes(ymax = gap + SE.sim, ymin = gap - SE.sim), width = .2)
p = p + ggtitle(title)
return(p)
}
gaps <- filmes_transform %>%
select(avaliacao_scaled, bilheteria_log_scaled) %>%
clusGap(FUN = kmeans, nstart = 20, K.max = 8, B = 200)
plot_clusgap(gaps)

n_clusters = 5
# O agrupamento de fato:
km = filmes_transform %>%
select(bilheteria_log_scaled, avaliacao_scaled) %>%
kmeans(centers = n_clusters, nstart = 20)
agrupado = km %>%
augment(filmes_transform)
telaQuenteCluster = agrupado %>%
filter(filme == "Interstellar")
preciososCluster = agrupado %>%
filter(filme == "Colossal")
haMelhoresCluster = agrupado %>%
filter(filme == "Bride Wars")
altaExpectativaCluster = agrupado %>%
filter(filme == "Rio 2")
passatempoBomCluster = agrupado %>%
filter(filme == "One Day")
grupos = agrupado %>%
add_column(grupo = NA) %>%
mutate(grupo = sub(telaQuenteCluster$.cluster, "Tela quente", .cluster)) %>%
mutate(grupo = sub(preciososCluster$.cluster, "Preciosos", grupo)) %>%
mutate(grupo = sub(haMelhoresCluster$.cluster, "Há melhores", grupo)) %>%
mutate(grupo = sub(altaExpectativaCluster$.cluster, "Alta expectativa", grupo)) %>%
mutate(grupo = sub(passatempoBomCluster$.cluster, "Passatempo bom", grupo))
x = grupos %>%
ggplot(aes(x=avaliacao, y=bilheteria)) +
stat_chull(aes(fill= grupo, text = paste("<b>grupo</b>: ", grupo)), alpha= 0.2, geom="polygon") +
geom_point(aes(color = grupo,
text = paste("<b>grupo</b>: ", grupo,
"<br><b>filme</b>: ", filme,
"<br><b>avaliação</b>: ", avaliacao,
"<br><b>bilheteria</b>: ", bilheteria))) +
xlab("Avaliação") +
ylab("Bilheteria") +
scale_y_log10() +
theme(legend.position = "none")
## Warning: Ignoring unknown aesthetics: text
## Warning: Ignoring unknown aesthetics: text
ggplotly(x, tooltip = "text")